//
//  Person.h
//  08_IOS9新特性
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject

// 系统默认添加一个属性是nonnull
NS_ASSUME_NONNULL_BEGIN
// Nullability是在编译层次上加了一些改动, 只能应用对象类型
// nonnull声明的属性不能为空
@property (nonnull, nonatomic, copy) NSString *name;
// 在声明属性的类型的星号后加 __nonnull
@property (nonatomic, copy) NSString * __nonnull myName;
// nullable声明的属性可以为空
@property (nullable, nonatomic, copy) NSString *sex;
@property (nonatomic, copy) NSString * __nullable gender;
// 不可以向下面这样做
//@property (nonnull, nonatomic, assign) NSInteger age;

// setter方法是nullable, getter可以是nonnull
// 举例:UIViewController中的view属性
@property (null_resettable, nonatomic, strong) NSArray *friends;
@property (nonatomic, strong) NSDictionary *hah;

// NS_ASSUME_NONNULL_BEGIN
// NS_ASSUME_NONNULL_END
// 一般应用于文件.h, 一般将声明包含起来
// 针对所有属性,添加 nonnull 修饰.
// 也就是说,除了 nullable 和 null_ressettable 需要加修饰,其他不需要

@end
NS_ASSUME_NONNULL_END
